/**
 * ===============================================================================
 * ==================== 该js文件使用了Promise方式请求信息 ==========================
 * ===============================================================================
 */

const util=require('./util.js')

/**
 * 封装微信的request请求。
 */
export function request_common(url, requestData, method, token = null, contentType = "application/json", showLoadStatus = true) {

    if (showLoadStatus == true) {
        wx.showLoading({
            title: '加载中...',
        });
    }

    return new Promise(function(resolve, reject) {
        wx.request({
            url: url,
            data: {
                ...requestData,
                //token: token
            },
            header: {
                'content-type': contentType,
                'USER_TOKEN': token
            },
            method: method,
            dataType: 'json',
            success: function(res) {
                //console.info("networkUtil wx.request().success().res",res)
                //若有加载等待提示
                if (showLoadStatus == true) {
                    wx.hideLoading();
                }
                /**
                 * 若res.statusCode为200，表示服务端处理了该请求。
                 */
                if (res.statusCode == 200) {
                    //若请求成功
                    if (res.data.status == 200) {
                        resolve(res.data)
                    } else if (res.data.status == 50001) {
                        /**
                         * 若token已失效。token已过期，提示用户重新登录。
                         */
                        console.info("token已过期,请重新登录!")
                        util.showToast("token已过期,请重新登录!")
                        reject(res.data)
                    } else {
                        //若请求失败
                        reject(res.data)
                    }
                } else {
                    /**
                     * 服务端处理该请求时，抛出错误。
                     */
                    reject(res);
                }
            },

            fail: function(err) {
                //请求失败，可能网络不通。
                reject(err)
            }
        })
    })
}

/**
 * 发送GET请求。
 */
export function request_get(url, requestData, showLoadStatus = true) {
    let method = "GET"
    let contentType = "application/json"
    let token = wx.getStorageSync("token")
    return request_common(url, requestData, method, token, contentType, showLoadStatus)
}

/**
 * 发送POST请求。
 */
export function request_post(url, requestData, showLoadStatus = true) {
    let method = "POST"
    let contentType = "application/json"
    let token = wx.getStorageSync("token")
    return request_common(url, requestData, method, token, contentType, showLoadStatus)
}

/**
 * 获取用户token信息。
 */
export function getTokenByOpenId(url, showLoadStatus = true) {
    let method = "GET"
    let contentType = "application/json"
    let requestData = {
        openId: wx.getStorageSync("openId")
    }
    return request_common(url, requestData, method, null, contentType, showLoadStatus)
}






